Data persistence is generally a core component of software applications and many persistence mechanisms are available for persisting the data. Software architects may make a decision for a persistence mechanism based on the requirements of the to-be-developed software application. Due to the nature of supported operating environments such as processing financial or scientific data, certain types of applications deal with highly interconnected data which results in larger amounts of dynamic update operations. Since many applications demand very fast response times, software architects often want to keep this frequently updated data in main memory and only persist data changes to disk when requested. Because those save operations—triggered by users or by the application itself—usually mean an interruption of the work flow, a quick and reliable execution is required.
Cloud computing is one of the latest trends in the computer industry. A key characteristic of this new style of computing is the ability to move services around in a highly dynamic infrastructure very quickly, but still in a reliable and secure way. Existing application server technologies help with deploying and moving applications in the cloud, but they offer little help when it comes to moving application data. Most systems rely on central, dedicated database servers that would not move like the application code does. Applications that deal with highly interconnected data perform poorly in these environments due to the large amount of I/O operations and network traffic needed by such an approach. For performance and security reasons, it is desirable to keep the application data close to the application.